Management of different types of resources (such as software components, applications or devices) is a critical issue in a data processing system with a distributed architecture. This problem is particular acute when the system includes a high number of logic and/or physic entities (referred to as subjects), each one directly controlling one or more resources; the problem is further exacerbated if the subjects have a high level of complexity or are dispersed across a large number of installations.
The management environments known in that art are based on an enforcement model (also known as manager/workers model). In this model, the process is entirely controlled by an authority residing at a central site of the system. The authority defines a desired configuration of every subject. For this purpose, the authority accesses a central repository storing the (alleged) current configuration of each subject, and determines the management actions required to bring the subject to the desired configuration starting from the current configuration. The management actions are then enforced remotely by the authority on the subject (which is totally passive).
A drawback of the management environments known in the art is the lack of any kind of cooperation between the authority and the subjects. This lack of cooperation may bring about inconsistencies when the subjects are upgraded out of the control of the authority. Moreover, in the solutions currently employed the management of subjects that are temporarily unavailable or off-line is quit difficult to implement. The known management environments require the authority to maintain information about the location of all the subjects; at the same time, the authority must handle the communication with every subject directly.
An additional problem arises when a specific state of one or more resources is a pre-requisite to the execution of some management actions. A typical example is that of a patch for a software product; in this case, the installation of the patch requires that the software product be already available on the subject. More complex dependencies are experienced in large systems with several correlated tiers.
As a consequence, the authority must explicitly define a workflow that drives the enforcement of the management actions on each subject in the correct sequence.
The authority must also handle any conditioning among the management actions directly. In any case, some conflicts cannot be identified a priori. Conversely, those conflicts arise if particular (and often unforeseeable) conditions occur; therefore, they can be detected only at run time when the management actions are enforced (assuming that the subjects report the result of the enforcement to the authority).
This problem is particular acute in high dynamic environments, wherein complex dependencies are defined among the different resources.
Moreover, the above-mentioned drawbacks strongly increase the difficulty of correctly defining any solution to be deployed in the system.